#region Copyright (c) 2003, newtelligence AG. All rights reserved.

/*
// Copyright (c) 2003, newtelligence AG. (http://www.newtelligence.com)
// Original BlogX Source Code: Copyright (c) 2003, Chris Anderson (http://simplegeek.com)
// All rights reserved.
//  
// Redistribution and use in source and binary forms, with or without modification, are permitted 
// provided that the following conditions are met: 
//  
// (1) Redistributions of source code must retain the above copyright notice, this list of 
// conditions and the following disclaimer. 
// (2) Redistributions in binary form must reproduce the above copyright notice, this list of 
// conditions and the following disclaimer in the documentation and/or other materials 
// provided with the distribution. 
// (3) Neither the name of the newtelligence AG nor the names of its contributors may be used 
// to endorse or promote products derived from this software without specific prior 
// written permission.
//      
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS 
// OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY 
// AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 
// IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 
// OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// -------------------------------------------------------------------------
//
// Original BlogX source code (c) 2003 by Chris Anderson (http://simplegeek.com)
// 
// newtelligence is a registered trademark of newtelligence Aktiengesellschaft.
// 
// For portions of this software, the some additional copyright notices may apply 
// which can either be found in the license.txt file included in the source distribution
// or following this notice. 
//
*/

#endregion

using System;
using System.Collections;
using System.Web.UI;
using System.Web.UI.WebControls;
using newtelligence.DasBlog.Web.Core;

namespace newtelligence.DasBlog.Web
{
    public partial class ProfileCombo : UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            SharedBasePage page = Page as SharedBasePage;

            if (!page.SiteConfig.EnableStartPageCaching)
            {
                UserCollection users = SiteSecurity.GetSecurity().Users;

                if (users != null && users.Count > 0)
                {
                    listProfiles.Items.Add(new ListItem("(select)", string.Empty));

                    users.Sort(new UserSorter());

                    foreach (User user in users)
                    {
                        string profileName = string.Empty;

                        if (user.DisplayName != null && user.DisplayName.Length > 0)
                        {
                            profileName = user.DisplayName;
                        }
                        else profileName = user.Name;
                        {
                            listProfiles.Items.Add(new ListItem(profileName, user.Name));
                        }
                    }
                }
                else
                {
                    Visible = false;
                }
            }
            else
            {
                Visible = false;
            }

            listProfiles.SelectedValue = string.Empty;
        }

        protected void listProfiles_SelectedIndexChanged(object sender, EventArgs e)
        {
            SharedBasePage page = Page as SharedBasePage;
            string profileName = listProfiles.SelectedValue;

            if (profileName != null && profileName != string.Empty)
            {
                page.Redirect(string.Format("~/Profile.aspx?user={0}", profileName));
            }
        }

        #region Web Form Designer generated code

        protected override void OnInit(EventArgs e)
        {
            InitializeComponent();
            base.OnInit(e);
        }

        private void InitializeComponent()
        {
        }

        #endregion

        #region Nested type: UserSorter

        public class UserSorter : IComparer
        {
            #region IComparer Members

            public int Compare(object x, object y)
            {
                User userX = x as User;
                User userY = y as User;

                string nameX = string.Empty;
                string nameY = string.Empty;

                if (userX != null)
                    nameX = (userX.DisplayName == string.Empty || userX.DisplayName == null)
                                ? userX.Name
                                : userX.DisplayName;

                if (userY != null)
                    nameY = (userY.DisplayName == string.Empty || userY.DisplayName == null)
                                ? userY.Name
                                : userY.DisplayName;

                return string.Compare(nameX, nameY);
            }

            #endregion
        }

        #endregion
    }
}